package com.qf.myrbac.utils;

import com.baomidou.mybatisplus.core.metadata.OrderItem;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

import java.util.Map;

public class PageQueryUtil<T> {
    public static <T> Page<T> getPage(Map<String, Object> params) {
        //如果params中有排序字段，就按照该排序字段设置排序。
        // 如果没传排序字段，那么可以给定一个默认的排序顺序。
        return getPage(params, null, "asc");
    }

    /**
     * 如果params没有指定排序字段，想使用默认的排序字段，就用这个
     *
     * @param params
     * @param colum
     * @param asc
     * @param <T>
     * @return
     */
    public static <T> Page<T> getPage(Map<String, Object> params, String colum, String asc) {
        long current = Long.parseLong(String.valueOf(params.get("page").toString()));
        long limit = Long.parseLong(String.valueOf(params.get("limit")));
        String order = String.valueOf(params.get("order"));
        String sidx = SQLFilter.sqlInject(String.valueOf(params.get("sidx")));
        Page<T> page = new Page<>(current, limit);
        //当传递了排序字段
        if (StringUtils.isNotBlank(order) && StringUtils.isNotBlank(sidx)) {
            page.addOrder(order.equals("asc") ? OrderItem.asc(sidx) : OrderItem.desc(sidx));
            return page;
        }
        //没有排序字段，按默认排序
        //默认排序字段为null，不生成排序的语句
        if (!StringUtils.isNotBlank(colum)) {
            return page;
        }
        //根据传递的默认字段进行排序
        if (!StringUtils.isNotBlank(asc)) {
            page.addOrder(asc.equals("asc") ? OrderItem.asc(colum) : OrderItem.desc(colum));
            return page;
        }
        return page;
    }
}
